// 基本数据类型
// 1. boolean值
// const bol: boolean = false
// const bol1: boolean = new Boolean(0)
// const bol2: boolean = Boolean(0)
// const bol3: Boolean = false // boolean 是 Boolean的子类型,子类型可以赋值给父类型
// 2. string
// const str: string = false
// const str1: string = `xxx${1}yyy`
// 3. number
// const num: number = 1
// const num1: number = NaN
// const num2: number = Infinity
// 4. null和undefined
// const xxx: null = null
// const yyy: undefined = undefined
// const zzz: string = undefined // 注意: undefined和null是所有类型的子类型,所以undefined和null可以给任何类型赋值
// 5. 空值
// void主要用于给函数声明返回值的类型. 表示这个函数没有返回值
// function fn(): void {
//   alert('My name is Tom')
// }
// const aaa: void = undefined // undefined和null是所有类型的子类型
// 任意值 any
// 注意: 如果定义为any类型, 则后续的代码提示和代码检查全部失效.所以一定要慎用
// let xxx: any
// xxx = 1
// xxx = '123'
// xxx = false
// xxx = {}
// let xxx: any = 1
// 类型推论/自动推论
// let xxx //声明变量,但是没有声明类型,则默认是any类型
// let yyy = 1 // 如果声明变量,没有声明类型,但是赋值了.则值是什么类型,就推论为什么类型
// let myFavoriteNumber
// myFavoriteNumber = 'seven'
// myFavoriteNumber = 7
// 联合类型
// let xxx: string | number
// xxx = '123'
// xxx = 123
// xxx = false
function getLength(something) {
    //注意: 只能访问联合类型中共有的属性和方法
    return something.toString();
}
